场景点
点表示XY平面上的位置。引擎内部不会修改一个已有点的位置(建议也不要自己去修改),所有会返回点的API都会返回一个创建出来的点。例如将点向某个方向移动,实际上是创建了一个新的点,而不是修改了传入的点。与服务器使用的点不同,客户端使用的点包含 高度 ,但在对2个点之间求长度或角度时,依然只计算XY平面。
创建
- 参数
- x (number) - X坐标
- y (number) - Y坐标
- z (number) - 高度
- 返回
- point (point) - 点
local point = base.point(x, y)
angle
求角度
- 参数
- target (point) - 目标点
- 返回
- angle (number) -
point
到target
的方向
- angle (number) -
返回值范围为(-180, 180]
。作为一个常用操作,我们提供了一个语法糖point / target
。
(该语法糖即将被废弃)
local angle = point1:angle(point2)
local angle = point1 / point2 -- 除法操作符版本即将被废弃
copy
复制
- 返回
- new_point (point) - 复制出来的点
local new_point = point:copy()
distance
求距离
- 参数
- target (point) - 目标点
- 返回
- distance (number) -
point
到target
的距离
- distance (number) -
作为一个常用操作,我们提供了一个语法糖point * target
。
(该语法糖即将被废弃)
local distance = point1:distance(point2)
local distance = point1 * point2 -- 乘号的语法糖即将被废弃
get_height
获取高度
- 返回
- height (number) - 高度
local height = point:get_height()
get_point
获取点
- 返回
- point (point) - 自己
这个方法不会创建一个新的点,返回的点就是对象自己。
local point = point:get_point()
get_position
获取位置
- 返回
- position (position) - 画面位置
获取点对应的画面位置。
local position = point:get_position()
get_xy
获取坐标
- 返回
- x (number) - X坐标
- y (number) - Y坐标
local x, y = point:get_xy()
is_block
当前坐标在当前场景下是否是碰撞
- 返回
- flag (boolean) - 是否是碰撞(有任意非通行bit都算碰撞)。如果返回nil则表示客户端Collision.dat读取有问题
local flag = point:is_block()
移动
- 参数
- angle (number) - 方向
- distance (number) - 距离
- 返回
- new_point (point) - 新的点
作为一个常用操作,我们提供了一个语法糖point - {angle, distance}
。
(该语法糖即将被废弃)
local new_point = point - {anlge, distance} -- 使用减号操作符的版本即将被废弃
local new_point = point:polar_to{angle, distance}
取反
- 返回
- new_point (point) - 新的点, 这个点的x,y,z = -x,-y,-z
local new_point = -point -- 点被反转了
相加
参数
- point2 (point)
返回
- new_point (point) 新的点
[new_x, new_y, new_z] = [self.x + point2.x, self.y + point2.y, self.z + point2.z]
local new_point = point + point2
坐标系映射
- 参数 origin (point) 目标坐标系的原点 facing (number) 目标坐标系在z轴旋转的角度
- 返回
- new_point (point) 相对于目标坐标系的位置
self的当前坐标系是: origin: base.point(0, 0), 0), facing: 0 将self从当前坐标系映射到坐标系(origin, facing)后, 返回self在该坐标系里的位置
local origin = {300, 300}
local facing = 45
local new_point = point:to_coordinate(origin, facing)